<?php

namespace service\login;

use encryption\Token;

class  McAction
{
    /**
     * @desc 手机号验证码登录
     * @param $params
     * @return array
     * @author zhaozhiwei
     * @date 2021-02-04 14:44
     */
    public static function main($params)
    {
        $user = \UserModel::getUserInfo($params['mobile']);
        //校验验证码
        (new \cache\Redis())->set('login:login_code' . $params['mobile'], '123456');
        $code = (new \cache\Redis())->get('login:login_code' . $params['mobile']);
        if ($params['code'] !== $code) return \Output2::fail(5004);
        if ($user['status'] == 0) return \Output2::fail(5003);
        if ($user) {
            //直接登录
            self::directLogin($params,$user);
        } else {
            //注册
            self::registerInfo($params);
        }

        //生成token
        $user['token'] = Token::getToken(['user_id' => $user['uid'], 'mobile' => $user['phone']]);
        return \Output2::success($user);
    }

    protected static function directLogin($params,$user)
    {
        if (time() - (int)$user['last_time'] > 24 * 3600) {
            $arr=['sign_num'=>0];
        }else{
            $arr=['integral[+]' => 100,'sign_num[+]'=>1];//连续登录奖励积分
        }
        \UserModel::integralChange($arr,$user['uid']);
        //更新登录信息
        $arr = [
            'last_ip' => '127.0.0.1',//獲取真實ip 需要一解決反向代理的方法
            'last_time' => time(),//最后一次登陸時間
        ];
        return \UserModel::updateUserInfo($arr, $user['uid']);
    }

    protected static function registerInfo($params)
    {
        //注册基本信息
        $arr = [
            'phone' => $params['mobile'],
            'account' => $params['mobile'],
            'add_time' => time(),
            'add_ip' => '127.0.0.1',
            'last_ip' => '127.0.0.1',//獲取真實ip 需要一解決反向代理的方法
            'last_time' => time(),//最后一次登陸時間
            'sign_num'=>1,
        ];
        //更新推广信息
//        if(isset($params['spread_uid']) && !empty($params['spread_uid']) && is_numeric($params['spread_uid'])){
//            //查看推广人信息 检测是否存在
//            $spread=\UserModel::getUserInfo($params['spread_uid']);
//            if(empty($spread)) return \Output2::fail(5005);
//            $arr['spread_uid']=$params['spread_uid'];  //添加推广者id
//
//            //推广人数,增加积分,增加关联信息
//            $spread_data=[
//                'integral[+]'=>1000,//推荐人积分+1000
//                'now_money[+]'=>1,//用户余额加1
//                'spread_time'=>time(),//关联时间
//            ];
//            \UserModel::updateUserInfo($spread_data,$params['spread_uid']);
//        }
        $user_id = \UserModel::registerUser($arr);
        return  \UserModel::getUserInfoById($user_id);
    }
}